function addEvent(obj,evtType,func,cap){
  cap=cap||false;
  if(obj.addEventListener){
    obj.addEventListener(evtType,func,cap);
    return true;
  }else if(obj.attachEvent){
    if(cap){
      obj.setCapture();
      return true;
    }else{
      return obj.attachEvent("on" + evtType,func);
    }
  }else{
    return false;
  }
}

function getPageScroll(){
  var xScroll,yScroll;
  if (self.pageXOffset) {
    xScroll = self.pageXOffset;
  } else if (document.documentElement && document.documentElement.scrollLeft){
    xScroll = document.documentElement.scrollLeft;
  } else if (document.body) {
    xScroll = document.body.scrollLeft;
  }
  if (self.pageYOffset) {
    yScroll = self.pageYOffset;
  } else if (document.documentElement && document.documentElement.scrollTop){
    yScroll = document.documentElement.scrollTop;
  } else if (document.body) {
    yScroll = document.body.scrollTop;
  }
  arrayPageScroll = new Array(xScroll,yScroll);
  return arrayPageScroll;
}

function GetPageSize() {
  var xScroll, yScroll;
  if (window.innerHeight && window.scrollMaxY) {
    xScroll = document.body.scrollWidth;
    yScroll = window.innerHeight + window.scrollMaxY;
  } else if (document.body.scrollHeight > document.body.offsetHeight){
    xScroll = document.body.scrollWidth;
    yScroll = document.body.scrollHeight;
  } else {
    xScroll = document.body.offsetWidth;
    yScroll = document.body.offsetHeight;
  }
  var windowWidth, windowHeight;
  if (self.innerHeight) {
    windowWidth = self.innerWidth;
    windowHeight = self.innerHeight;
  } else if (document.documentElement && document.documentElement.clientHeight) {
    windowWidth = document.documentElement.clientWidth;
    windowHeight = document.documentElement.clientHeight;
  } else if (document.body) {
    windowWidth = document.body.clientWidth;
    windowHeight = document.body.clientHeight;
  }
  if(yScroll < windowHeight){
    pageHeight = windowHeight;
  } else {
    pageHeight = yScroll;
  }
  if(xScroll < windowWidth){
    pageWidth = windowWidth;
  } else {
    pageWidth = xScroll;
  }
  arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
  return arrayPageSize;
}

var AdMoveConfig=new Object();
AdMoveConfig.IsInitialized=false;
AdMoveConfig.ScrollX=0;
AdMoveConfig.ScrollY=0;
AdMoveConfig.MoveWidth=0;
AdMoveConfig.MoveHeight=0;
AdMoveConfig.Resize=function(){
  var winsize=GetPageSize();
  AdMoveConfig.MoveWidth=winsize[2];
  AdMoveConfig.MoveHeight=winsize[3];
  AdMoveConfig.Scroll();
}
AdMoveConfig.Scroll=function(){
  var winscroll=getPageScroll();
  AdMoveConfig.ScrollX=winscroll[0];
  AdMoveConfig.ScrollY=winscroll[1];
}
addEvent(window,"resize",AdMoveConfig.Resize);
addEvent(window,"scroll",AdMoveConfig.Scroll);
function AdMove(id){
  if(!AdMoveConfig.IsInitialized){
    AdMoveConfig.Resize();
    AdMoveConfig.IsInitialized=true;
  }
  var obj=document.getElementById(id);
  obj.style.position="absolute";
  var W=AdMoveConfig.MoveWidth-obj.offsetWidth;
  var H=AdMoveConfig.MoveHeight-obj.offsetHeight;
  var x = W*Math.random(),y = H*Math.random();
  var rad=(Math.random()+1)*Math.PI/6;
  var kx=Math.sin(rad),ky=Math.cos(rad);
  var dirx = (Math.random()<0.5?1:-1), diry = (Math.random()<0.5?1:-1);
  var step = 1;
  var interval;
  this.SetLocation=function(vx,vy){x=vx;y=vy;}
  this.SetDirection=function(vx,vy){dirx=vx;diry=vy;}
  obj.CustomMethod=function(){
    obj.style.left = (x + AdMoveConfig.ScrollX) + "px";
    obj.style.top = (y + AdMoveConfig.ScrollY) + "px";
    rad=(Math.random()+1)*Math.PI/6;
    W=AdMoveConfig.MoveWidth-obj.offsetWidth;
    H=AdMoveConfig.MoveHeight-obj.offsetHeight;
    x = x + step*kx*dirx;
    if (x < 0){dirx = 1;x = 0;kx=Math.sin(rad);ky=Math.cos(rad);}
    if (x > W){dirx = -1;x = W;kx=Math.sin(rad);ky=Math.cos(rad);}
    y = y + step*ky*diry;
    if (y < 0){diry = 1;y = 0;kx=Math.sin(rad);ky=Math.cos(rad);}
    if (y > H){diry = -1;y = H;kx=Math.sin(rad);ky=Math.cos(rad);}
  }
  this.Run=function(){
    var delay = 10;
    interval=setInterval(obj.CustomMethod,delay);
    obj.onmouseover=function(){clearInterval(interval);}
    obj.onmouseout=function(){interval=setInterval(obj.CustomMethod, delay);}
  }
}